package main

import (
	"fmt"
	"reflect"
)

func reflectSetValue1(x interface{}) {
	v := reflect.ValueOf(x)
	if v.Kind() == reflect.Int64 {
		v.SetInt(2000) // 修改为 副本值， 引发 panic
	}
}

func reflectSetValue2(x interface{}) {
	v := reflect.ValueOf(x)
	// 使用 ELem方法获取对应值
	if v.Elem().Kind() == reflect.Int64 {
		v.Elem().SetInt(200)
	}
}

func main() {
	var a int64 = 1
	//reflectSetValue1(a)
	//reflectSetValue1(&a) // 修改无效
	//reflectSetValue2(&a) // 注意这里传的为 指针
	fmt.Println(a)
}
